[Beta] revoke a counterparty address's approval
curl --request DELETE \
--url https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"counterparty_id": "3f0a3c1e-6b1d-5f2a-8e44-9a0b1c2d3e4f",
"client_entity_id": "6859927c-292e-4077-8d6a-70542c00a267",
"counterparty_entity_id": "<string>",
"address": "0x8589427373d6d84e98730d7795d8f6f8731fda16",
"network": "eth",
"beneficiary_name": "Halvard Capital AG",
"status": "clear",
"checks": [
{
"kind": "address_risk",
"check_type": "range_address_risk",
"label": "Range address risk",
"provider": "range",
"provider_used": null,
"status": "pass",
"screened_at": "2026-10-07T09:12:03.120Z",
"note": null,
"reason": {
"code": "not_approved_counterparty",
"check_type": "approved_counterparties",
"policy_key": "client.whitelist",
"message": "Not one of the client's approved counterparties"
},
"risk_tier": "low",
"travel_rule_status": "complete",
"provider_detail": {
"provider_status": "SETTLED"
},
"evidence": {
"screen_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"score": 100,
"sanctioned": true,
"signals": [
{
"signal": "eu-sanctioned",
"name": "EU Sanctioned",
"pillar": "exposure",
"severity": "severe",
"summary": "1.24% of counterparty volume is eu-sanctioned, crossing the 1% (severe) threshold.",
"confidence": null,
"rule": {
"name": "Sanctions exposure",
"threshold": "1% (severe)"
}
}
],
"listings": [
{
"authority": "OFAC",
"program": "SDN",
"list_key": "us_ofac_sdn",
"listed_at": "2022-04-14",
"delisted_at": null
}
],
"attribution": [
{
"name": "Lazarus Group",
"category": "sanctions",
"role": "owner",
"polarity": "risk",
"confidence": 98
}
],
"exposures": [
{
"name": "Tornado Cash",
"category": "mixer",
"direction": "incoming",
"hop": "direct",
"share": 0.123,
"share_basis": "total-volume",
"usd": 45210
}
],
"totals": {
"incoming_usd": 367000,
"outgoing_usd": 120000,
"flagged_incoming_usd": 45210,
"flagged_outgoing_usd": 0
},
"data_as_of": "2026-10-08T09:00:00Z",
"provider_used": "chainalysis"
}
}
],
"reasons": [
{
"code": "not_approved_counterparty",
"check_type": "approved_counterparties",
"policy_key": "client.whitelist",
"message": "Not one of the client's approved counterparties"
}
],
"last_screened_at": "<string>",
"case_id": "<string>"
}Screening
[Beta] revoke a counterparty address's approval
The entry is kept for audit with status “removed”, and payments to the address are no longer to an approved counterparty. The entity stays in the register.
DELETE
/
v2
/
screening
/
clients
/
{client_entity_id}
/
counterparties
/
{counterparty_id}
[Beta] revoke a counterparty address's approval
curl --request DELETE \
--url https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/screening/clients/{client_entity_id}/counterparties/{counterparty_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"counterparty_id": "3f0a3c1e-6b1d-5f2a-8e44-9a0b1c2d3e4f",
"client_entity_id": "6859927c-292e-4077-8d6a-70542c00a267",
"counterparty_entity_id": "<string>",
"address": "0x8589427373d6d84e98730d7795d8f6f8731fda16",
"network": "eth",
"beneficiary_name": "Halvard Capital AG",
"status": "clear",
"checks": [
{
"kind": "address_risk",
"check_type": "range_address_risk",
"label": "Range address risk",
"provider": "range",
"provider_used": null,
"status": "pass",
"screened_at": "2026-10-07T09:12:03.120Z",
"note": null,
"reason": {
"code": "not_approved_counterparty",
"check_type": "approved_counterparties",
"policy_key": "client.whitelist",
"message": "Not one of the client's approved counterparties"
},
"risk_tier": "low",
"travel_rule_status": "complete",
"provider_detail": {
"provider_status": "SETTLED"
},
"evidence": {
"screen_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"score": 100,
"sanctioned": true,
"signals": [
{
"signal": "eu-sanctioned",
"name": "EU Sanctioned",
"pillar": "exposure",
"severity": "severe",
"summary": "1.24% of counterparty volume is eu-sanctioned, crossing the 1% (severe) threshold.",
"confidence": null,
"rule": {
"name": "Sanctions exposure",
"threshold": "1% (severe)"
}
}
],
"listings": [
{
"authority": "OFAC",
"program": "SDN",
"list_key": "us_ofac_sdn",
"listed_at": "2022-04-14",
"delisted_at": null
}
],
"attribution": [
{
"name": "Lazarus Group",
"category": "sanctions",
"role": "owner",
"polarity": "risk",
"confidence": 98
}
],
"exposures": [
{
"name": "Tornado Cash",
"category": "mixer",
"direction": "incoming",
"hop": "direct",
"share": 0.123,
"share_basis": "total-volume",
"usd": 45210
}
],
"totals": {
"incoming_usd": 367000,
"outgoing_usd": 120000,
"flagged_incoming_usd": 45210,
"flagged_outgoing_usd": 0
},
"data_as_of": "2026-10-08T09:00:00Z",
"provider_used": "chainalysis"
}
}
],
"reasons": [
{
"code": "not_approved_counterparty",
"check_type": "approved_counterparties",
"policy_key": "client.whitelist",
"message": "Not one of the client's approved counterparties"
}
],
"last_screened_at": "<string>",
"case_id": "<string>"
}Authorizations
AuthorizationAuthorization
Authorization method required to allow user to access the api endpoints.
Response
200 - application/json
The approval link (client, network, address).
Example:
"3f0a3c1e-6b1d-5f2a-8e44-9a0b1c2d3e4f"
Example:
"6859927c-292e-4077-8d6a-70542c00a267"
Example:
"0x8589427373d6d84e98730d7795d8f6f8731fda16"
Example:
"eth"
Example:
"Halvard Capital AG"
pending: not screened yet (screened about a minute after it was added, or by the next run when screening on add is off).
Available options:
clear, flagged, removed, pending, error Example:
"clear"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The /v2/cases id of the open case its flag opened (source_type counterparty_screening).
Was this page helpful?